package com.bzyd.ss.controller;

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class TestController {

    /**
     * Spring Security 是一个和Shiro的安全认证框架，主要包含了认证、授权两个模块
     * 认证：判断登录的用户是否是系统认可的主体
     * 授权：判断用户是否拥有某一资源的权限
     */

    @RequestMapping("/test1")
    public String test1(){
        return "Hello Spring Security!";
    }

    /**
     * @PreAuthorize 在方法执行前进行授权判断，支持SpEL表达式
     */

    @RequestMapping("/test2")
    @PreAuthorize(value = "hasAnyRole('admin','normal')")
    public String test2(){
        return "测试拥有normal、admin角色的用户授权";
    }

    @RequestMapping("/test3")
    @PreAuthorize(value = "hasAnyRole('admin')")
    public String test3(){
        return "测试用户admin角色的用户授权";
    }

    @RequestMapping("/test4")
    @PreAuthorize(value = "hasAnyAuthority('user:create','user:find')")
    public String test4(){
        return "测试拥有user:create,user:find权限的用户授权";
    }

    @RequestMapping("/test5")
    @PreAuthorize(value = "hasAnyAuthority('order:find')")
    public String test5(){
        return "测试拥有order:find权限的用户授权";
    }

}
